package com.peas.platform.module.icims.base.sys.controller.vo;

import java.util.*;

import com.peas.platform.common.core.annotation.Comment;
import com.peas.platform.common.core.vo.BaseVo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.validation.constraints.*;

@Data
@EqualsAndHashCode(callSuper = false)
@ApiModel("访问记录")
public class VisitVo extends BaseVo {

    @Comment(value = "系统")
    @ApiModelProperty(value = "系统")
    @Size(max = 100, message = "系统不能超过100个字符")
    private String system;

    @Comment(value = "系统名称")
    @ApiModelProperty(value = "系统名称")
    @Size(max = 100, message = "系统名称不能超过100个字符")
    private String systemName;

    @Comment(value = "服务")
    @ApiModelProperty(value = "服务")
    @Size(max = 100, message = "服务不能超过100个字符")
    private String service;

    @Comment(value = "服务名")
    @ApiModelProperty(value = "服务名")
    @Size(max = 100, message = "服务名不能超过100个字符")
    private String serviceName;

    @Comment(value = "接口描述")
    @ApiModelProperty(value = "接口描述")
    @Size(max = 200, message = "接口描述不能超过200个字符")
    private String interfaceDesc;

    @Comment(value = "接口地址")
    @ApiModelProperty(value = "接口地址")
    @Size(max = 200, message = "接口地址不能超过200个字符")
    private String interfaceUrl;

    @Comment(value = "处理类")
    @ApiModelProperty(value = "处理类")
    @Size(max = 100, message = "处理类不能超过100个字符")
    private String clazz;

    @Comment(value = "处理方法")
    @ApiModelProperty(value = "处理方法")
    @Size(max = 100, message = "处理方法不能超过100个字符")
    private String method;

    @Comment(value = "请求ContentType")
    @ApiModelProperty(value = "请求ContentType")
    @Size(max = 200, message = "请求ContentType不能超过200个字符")
    private String reqContentType;

    @Comment(value = "请求Protocol")
    @ApiModelProperty(value = "请求Protocol")
    @Size(max = 200, message = "请求Protocol不能超过200个字符")
    private String reqProtocol;

    @Comment(value = "请求Schema")
    @ApiModelProperty(value = "请求Schema")
    @Size(max = 200, message = "请求Schema不能超过200个字符")
    private String reqScheme;

    @Comment(value = "请求PathInfo")
    @ApiModelProperty(value = "请求PathInfo")
    @Size(max = 200, message = "请求PathInfo不能超过200个字符")
    private String reqPathInfo;

    @Comment(value = "请求PathTranslated")
    @ApiModelProperty(value = "请求PathTranslated")
    @Size(max = 200, message = "请求PathTranslated不能超过200个字符")
    private String reqPathTranslated;

    @Comment(value = "请求URI")
    @ApiModelProperty(value = "请求URI")
    @Size(max = 200, message = "请求URI不能超过200个字符")
    private String reqRequestUri;

    @Comment(value = "请求URL")
    @ApiModelProperty(value = "请求URL")
    @Size(max = 200, message = "请求URL不能超过200个字符")
    private String reqRequestUrl;

    @Comment(value = "请求ContextPath")
    @ApiModelProperty(value = "请求ContextPath")
    @Size(max = 200, message = "请求ContextPath不能超过200个字符")
    private String reqContextPath;

    @Comment(value = "请求QueryString")
    @ApiModelProperty(value = "请求QueryString")
    private String reqQueryString;

    @Comment(value = "请求Method")
    @ApiModelProperty(value = "请求Method")
    @Size(max = 200, message = "请求Method不能超过200个字符")
    private String reqMethod;

    @Comment(value = "请求AuthType")
    @ApiModelProperty(value = "请求AuthType")
    @Size(max = 200, message = "请求AuthType不能超过200个字符")
    private String reqAuthType;

    @Comment(value = "请求ServletPath")
    @ApiModelProperty(value = "请求ServletPath")
    @Size(max = 200, message = "请求ServletPath不能超过200个字符")
    private String reqServletPath;

    @Comment(value = "请求SessionId")
    @ApiModelProperty(value = "请求SessionId")
    @Size(max = 200, message = "请求SessionId不能超过200个字符")
    private String reqRequestedSessionId;

    @Comment(value = "请求RemoteUser")
    @ApiModelProperty(value = "请求RemoteUser")
    @Size(max = 200, message = "请求RemoteUser不能超过200个字符")
    private String reqRemoteUser;

    @Comment(value = "请求RemoteAddr")
    @ApiModelProperty(value = "请求RemoteAddr")
    @Size(max = 200, message = "请求RemoteAddr不能超过200个字符")
    private String reqRemoteAddr;

    @Comment(value = "请求RemoteHost")
    @ApiModelProperty(value = "请求RemoteHost")
    @Size(max = 200, message = "请求RemoteHost不能超过200个字符")
    private String reqRemoteHost;

    @Comment(value = "请求RemotePort")
    @ApiModelProperty(value = "请求RemotePort")
    private Integer reqRemotePort;

    @Comment(value = "请求ServerName")
    @ApiModelProperty(value = "请求ServerName")
    @Size(max = 200, message = "请求ServerName不能超过200个字符")
    private String reqServerName;

    @Comment(value = "请求ServerPort")
    @ApiModelProperty(value = "请求ServerPort")
    private Integer reqServerPort;

    @Comment(value = "请求LocalAddr")
    @ApiModelProperty(value = "请求LocalAddr")
    @Size(max = 200, message = "请求LocalAddr不能超过200个字符")
    private String reqLocalAddr;

    @Comment(value = "请求LocalName")
    @ApiModelProperty(value = "请求LocalName")
    @Size(max = 200, message = "请求LocalName不能超过200个字符")
    private String reqLocalName;

    @Comment(value = "请求LocalPort")
    @ApiModelProperty(value = "请求LocalPort")
    private Integer reqLocalPort;

    @Comment(value = "请求Cookies")
    @ApiModelProperty(value = "请求Cookies")
    private String reqCookies;

    @Comment(value = "请求ParameterMap")
    @ApiModelProperty(value = "请求ParameterMap")
    private String reqParameterMap;

    @Comment(value = "请求TrailerFields")
    @ApiModelProperty(value = "请求TrailerFields")
    private String reqTrailerFields;

    @Comment(value = "请求Headers")
    @ApiModelProperty(value = "请求Headers")
    private String reqHeaders;

    @Comment(value = "响应Status")
    @ApiModelProperty(value = "响应Status")
    private Integer respStatus;

    @Comment(value = "响应CharacterEncoding")
    @ApiModelProperty(value = "响应CharacterEncoding")
    @Size(max = 200, message = "响应CharacterEncoding不能超过200个字符")
    private String respCharacterEncoding;

    @Comment(value = "响应ContentType")
    @ApiModelProperty(value = "响应ContentType")
    @Size(max = 200, message = "响应ContentType不能超过200个字符")
    private String respContentType;

    @Comment(value = "响应Headers")
    @ApiModelProperty(value = "响应Headers")
    private String respHeader;

    @Comment(value = "访问请求ID")
    @ApiModelProperty(value = "访问请求ID")
    @Size(max = 200, message = "访问请求ID不能超过200个字符")
    private String visitRequestId;

    @Comment(value = "访问时间")
    @ApiModelProperty(value = "访问时间")
    private Date visitTime;

    // （用户表）外键
    @Comment(value = "访问用户ID")
    @ApiModelProperty(value = "访问用户ID")
    private Long visitUser;

    @Comment(value = "访问耗时(毫秒)")
    @ApiModelProperty(value = "访问耗时(毫秒)")
    private Long visitDuration;

}
